<?php
/**
 * Representa��o de um Servidor do Campus.
 * Cont�m informa��es que possam representar um servidor do instituto no sistema.
 */

//if( !function_exists('__autoload') )
//{
  //  function __autoload($class_name) {
    //require_once $class_name . '.php';
    //}
//}
require_once 'ServidorDAO.php';

class Servidor
{
      private $id;                 // chave-prim�ria do servidor no banco de dados
      private $setor;              // Objeto do tipo Setor com as informa��es do setor ao qual o servidor � vinculado.
      private $usuario;            // usu�rio do servidor utilizado para login no sistema
      private $senha;              // senha do servidor utilizada para login no sistema
      private $perfil;             // N�vel de acesso as paginas que o usu�rio possui.
      private $cpf;                // CPF do servidor
      private $siape;              // Matricula do SIAPE do servidor
      private $dao;


      public function __set( $var, $val )
      {
             $this->$var = $val;
      }

      public function __get( $var )
      {
             return $this->$var;
      }

      public function __construct( $id = NULL, $setor = NULL, $usuario = NULL, $senha = NULL, $perfil = NULL, $cpf = NULL, $siape = NULL )
      {
             $this->id = $id;
             $this->setor = $setor;
             $this->usuario = $usuario;
             $this->senha = $senha;
             $this->perfil = $perfil;
             $this->cpf = $cpf;
             $this->siape = $siape;
             $this->dao = new ServidorDAO();
      }
      
      /**
      Retorna a unidade a qual o servidor est� vinc�lado.
      */
      public function ObterCampus()
      {
             $resultado = $this->dao->ObterCampus( $this );
             return $resultado;
      }

      /**
      Insere um registro de servidor na tabela t_usuario.
      @return - Retorna TRUE caso a opera��o seja efetuada com sucesso ou FALSE caso contr�rio.
      */
      public function Cadastrarservidor(  )
      {
             $resultado = $this->dao->Salvar( $this );
             return $resultado;
      }

      /**
      Altera um registro de servidor na tabela t_usuario.
      @return - Retorna TRUE caso a opera��o seja efetuada com sucesso ou FALSE caso contr�rio.
      */
      public function Alterarservidor(  )
      {
             $resultado = $this->dao->Atualizar( $this );
             return $resultado;
      }

      /**
      Exclui o registro da tabela t_usuario de chave-prim�ria $id.
      @id - Chave-prim�ria do servidor cadastrado no banco de dados.
      @return - Retorna TRUE caso a opera��o seja efetuada com sucesso ou FALSE caso contr�rio.
      */
      public function Removerservidor( $id )
      {
             $resultado = $this->dao->Deletar( $id );
             return $resultado;
      }
      
      /**
      Busca na tabela t_usuario pelo registro associado � chave-prim�ria $id.
      Caso um registro seja encontrado ser� criada uma inst�ncia de servidor com os valores das colunas do registro em quest�o.
      @id - Chave-prim�ria do servidor cadastrado no banco de dados.
      @return - Retorna um objeto servidor com as informa��es encontradas no registro. Caso n�o encontre nenhum registro retorna FALSE.
      */
      public function CarregarServidor( $id )
      {
             $resultado = $this->dao->Carregarservidor( $id );
             return $resultado;
             
      }

      public function CarregarServidorPorUsuario( $usuario )
      {
             $resultado = $this->dao->CarregarServidorPorUsuario($usuario);
             return $resultado;
             
      }
      
      /**
      Retorna todos os registros da tabela t_usuario.
      Para cada registro encontrado ser� criada uma inst�ncia de servidor com os valores das colunas do registro em quest�o.
      Por fim, caso sejam encontrados registros, todas as inst�ncias criadas ser�o inseridas dentro de um array que ser� retornado por este m�todo.
      Caso contr�rio, ser� retornado FALSE indicando que n�o foi encontrado nenhum registro.
      @return - Retorna um array de objetos do tipo Servidor. Caso n�o encontre nenhum registro retorna FALSE.
      */
      public function CarregarServidores()
      {
             $resultado = $this->dao->CarregarTodos();
             return $resultado;
      }
      
      /**
      Retorna todos os registros da tabela t_usuario que possuam estejam v�nculadas ao setor de chave-extrangeira $setorId.
      Para cada registro encontrado ser� criada uma inst�ncia de Servidor com os valores das colunas do registro em quest�o.
      Por fim, caso sejam encontrados registros, todas as inst�ncias criadas ser�o inseridas dentro de um array que ser� retornado por este m�todo.
      Caso contr�rio, ser� retornado FALSE indicando que n�o foi encontrado nenhum registro.
      @setorId - Chave-extrangeira da tabela t_setor ao qual o servidor est� associado.
      @return - Retorna um array de objetos do tipo Servidor. Caso n�o encontre nenhum registro retorna FALSE.
      */
      public function CarregarServidoresPorSetor( $setorId )
      {
             $resultado = $this->dao->CarregarPorSetor( $setorId );
             return $resultado;
      }
      
      public function CarregarServidoresPorUnidade( $campusId )
      {
             $resultado = $this->dao->CarregarPorUnidade( $campusId );
             return $resultado;
      }
      
      /**
      Valida a entrada do servidor no sistema. Verifica se $usuario e $senha est�o cadastradas no banco de dados e se coincidem.
      @usuario - Usu�rio do servidor cadastrado no banco de dados.
      @senha - Senha cadastrada para o usu�rio no banco de dados.
      @return - Caso a valida��o seja verdadeira, retorna a chave-prim�ria do Servidor no banco de dados. Caso contr�rio retorna FALSE.
      */
      public function EfetuarLogin ( $usuario, $senha )
      {
             $resultado = $this->dao->Login( $usuario, $senha );
			 
             if( $resultado != FALSE )
             {
	             	$_SESSION['servidorId'] = $resultado->id;
         			$_SESSION['servidorPerfil'] = $resultado->perfil;

	             	header("Location: Acesso.php");
             }
             else
             {
	             	$_SESSION['mensagem'] = "Usu�rio ou senha inv�lidos! Tente novamente.";
	             	
	    			header("Location: index.php?err=1");
             }   
      }
}
?>
